import axios from 'axios'
import Vue from 'vue'
import router from '@/router'
import store from '@/store'
import moment from 'moment'



// 创建一个axios实例
const $axios = axios.create({
    // 设置超时时间
    timeout: 3000,
    // 基础url，会在请求url中自动添加前置链接
    baseURL: process.env.VUE_APP_BASE_API,
    responseType: 'json',
    withCredentials: false,
    headers: {
        // 'Content-Type': 'application/json'
        get: {
            'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
                // 在开发中，一般还需要单点登录或者其他功能的通用请求头，可以一并配置进来
        },
        post: {
            'Content-Type': 'application/json;charset=utf-8'
                // 在开发中，一般还需要单点登录或者其他功能的通用请求头，可以一并配置进来
        }

    }

})
//      * 请求拦截器
//      * 用于处理请求前在每次请求头部添加token
//      */
$axios.interceptors.request.use(
  config => {
    config.headers = {
      Authorization: store.getters.getCurrentUser ? `Bearer ${store.getters.getCurrentUser.token}` : ''
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)
$axios.defaults.timeout = 20000;
$axios.defaults.withCredentials = true //允许跨域携带cookie
//相应拦截器
$axios.interceptors.response.use(
  res => {
    if (res.data.code === 70002)
      { router.replace('/login') }
    return res
  },
  err => {
    // 网络错误统一在此处理
    if (err.response && err.response.status === 401) {
      // Vue.prototype.$toast.error('您没有相应的权限')
      // Vue.prototype.$toast.error('登录过期 请重新登录!')
      { router.replace('/login') }
      //   router.go(-1)
    } else {
      Vue.prototype.$toast.error('~~网络出小差了~~')
    }
    return Promise.reject(err)
  })
export function Post(url,params,headers={}) {
  return new Promise((resolve,reject) => {
    $axios.post(url,params,{ headers })
      .then(response => {
        resolve(response.data)
      })
      .catch(error => {
        reject(error)
      })
  })
}
export function Get(url, params) {
  return new Promise((resolve,reject) => {
    $axios.get(url,{ params })
      .then(response => {
        resolve(response.data)
      })
      .catch(error => {
        reject(error)
      })
  })
}

//     // get，post请求方法
export default {
  Post,
  Get
}
